﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BOAcademias;
using TOAcademias;
using System.IO;

/*************************************
Autor: Carlos Sánchez
Fecha de Creación: 06/02/2011
Descripción de la Funcionalidad: Formulario que permite generar el reporte
de asistencia a las diferentes academias, teniendo la opcion de poder filtrar
la informacion a mostrar.
**************************************/   

public partial class TunkiFiles_Reportes_ReporteCierreCurso : System.Web.UI.Page
{

    BOAcademia boAcademia = new BOAcademia();
    BOReporte boReporte = new BOReporte();


    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            ddlAcademia.DataSource = boAcademia.obtenerAcademias();
            ddlAcademia.DataTextField = "Des_Academia";
            ddlAcademia.DataValueField = "Cod_Academia";
            ddlAcademia.DataBind();
            //Agregar y Seleccionar la opción [Todos]
            ddlAcademia.Items.Add("[Todos]");
            ddlAcademia.SelectedIndex = ddlAcademia.Items.Count - 1;
        }
    }


    #region Generar Reporte

    String GenerarFiltro()
    {
        String strFiltroTotal = String.Empty;
        String strFiltroAcademia = String.Empty;
        String strFiltroAnio = String.Empty;
        String strFiltroCiclo = String.Empty;

        if (ddlAcademia.SelectedValue != "[Todos]")
        {
            strFiltroAcademia = "{UVW_REP_ASISTENCIAS.COD_ACADEMIA}='" + ddlAcademia.SelectedValue + "'";
        }

        if (ddlAnio.SelectedValue != "[Todos]")
        {
            strFiltroAnio = "DatePart('YYYY',{UVW_REP_ASISTENCIAS.FEC_INICIO})=" + ddlAnio.SelectedValue;
        }

        if (ddlCiclo.SelectedValue != "[Todos]")
        {
            strFiltroCiclo = "{UVW_REP_ASISTENCIAS.CICLO}=" + (Convert.ToInt32(ddlCiclo.SelectedValue)).ToString();
        }

        if (strFiltroAcademia != "") strFiltroTotal = strFiltroAcademia;
        if (strFiltroAnio != "")
        {
            if (strFiltroTotal != "")
                strFiltroTotal += " and " + strFiltroAnio;
            else
                strFiltroTotal = strFiltroAnio;
        }
        if (strFiltroCiclo != "")
        {
            if (strFiltroTotal != "")
                strFiltroTotal += " and " + strFiltroCiclo;
            else
                strFiltroTotal = strFiltroCiclo;
        }

        return strFiltroTotal;
    }

    protected void imbGenerarReporte_Click(object sender, ImageClickEventArgs e)
    {
        Session["Reporte"] = "Asistencias";
        Session["TipoReporte"] = rblFormato.SelectedValue;
        Session["Filtro"] = GenerarFiltro();
        Server.Transfer("VisorReporte.aspx", true);
    }

    #endregion


    protected void imbExportarExcel_Click(object sender, ImageClickEventArgs e)
    {
        gvGrid.DataSource = boReporte.reporteAsistencias();
        gvGrid.DataBind();
        //PrepareGridViewForExport(GridView1);
        ExportGridView(gvGrid);
    }

    private void ExportGridView(GridView gvGrid)
    {
        string strAttachment = "attachment; filename=Reporte.xls";
        Response.ClearContent();
        Response.AddHeader("content-disposition", strAttachment);
        Response.ContentType = "application/ms-excel";

        StringWriter sw = new StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(sw);

        gvGrid.RenderControl(htw);
        Response.Write(sw.ToString());
        Response.End();
    }

    public override void VerifyRenderingInServerForm(Control control)
    {
    }

    private void PrepareGridViewForExport(Control ctlGv)
    {
        LinkButton lbn = new LinkButton();
        Literal l = new Literal();
        string strName = String.Empty;

        for (int i = 0; i < ctlGv.Controls.Count; i++)
        {
            if (ctlGv.Controls[i].GetType() == typeof(LinkButton))
            {
                l.Text = (ctlGv.Controls[i] as LinkButton).Text;
                ctlGv.Controls.Remove(ctlGv.Controls[i]);
                ctlGv.Controls.AddAt(i, l);
            }
            else if (ctlGv.Controls[i].GetType() == typeof(DropDownList))
            {
                l.Text = (ctlGv.Controls[i] as DropDownList).SelectedItem.Text;
                ctlGv.Controls.Remove(ctlGv.Controls[i]);
                ctlGv.Controls.AddAt(i, l);
            }
            else if (ctlGv.Controls[i].GetType() == typeof(CheckBox))
            {
                l.Text = (ctlGv.Controls[i] as CheckBox).Checked ? "True" : "False";
                ctlGv.Controls.Remove(ctlGv.Controls[i]);
                ctlGv.Controls.AddAt(i, l);
            }
            if (ctlGv.Controls[i].HasControls())
            {
                PrepareGridViewForExport(ctlGv.Controls[i]);
            }
        }
    }

}
